/*
 * Data.cpp
 *
 *  Created on: 06/08/2012
 *      Author: Guilherme Branco
 *              filipe
 */
 #include "Data.h"
 Data::Data(string data)
 {
     setValor(data);
 }

 void Data::validar(string data) throw(invalid_argument)
 {
     size_t tag1 = data.find_first_of("/");
     size_t tag2 = data.find_last_of("/");
     string sub1 = data.substr(0,tag1);
     unsigned int dia = atof(sub1.c_str());
     string sub2 = data.substr(tag1+1,tag2);
     unsigned int mes = atof(sub2.c_str());
     string sub3 = data.substr(tag2+1,data.size());
     unsigned int ano = atof(sub3.c_str());
     if(data.size()!=10)
     {
         throw invalid_argument("Data invalida.");
     }
     if(dia<0)
     {
         throw invalid_argument("Dia invalido.");
     }
     switch(mes)
     {
         case Fevereiro:
            if(dia>29)
                throw invalid_argument("Dia invalido para o mes de Fevereiro.");
                break;
         case Janeiro:Marco:Maio:Julho:Setembro:Novembro:
            if(dia>T_DIAS)
                throw invalid_argument("Dia invalido para os meses Janeiro,Marco,Maio,Julho,Setembro,Novembro");
                break;
         case Abril:Junho:Agosto:Outubro:Dezembro:
            if(dia>30)
                throw invalid_argument("Dia invalido para os meses Abril,Junho,Agosto,Dezembro");
                break;
     }
     if(mes<0||mes>T_MESES)
     {
         throw invalid_argument("Mes invalido.");
     }
     /*Fazer teste de ano bisexto*/
 }